European patent EP1428117 B1 describes a process and a system designed to organize elements from a server application to a client-server system.
In the EP1428117 B1 solution, server and client components of an application follow a pattern of complementary hierarchical graphs, such as arborescences or directed acyclic graphs. One or several vertices of the server graph are connected through a communication interface. This interface connects vertices from different client graphs. The server graph contains the union of all the client vertices. On the other hand, each client graph only contains a subset from the server graph. Autonomous graph objects (named “actors”) can be put together in order to build composite object graphs dealing with both the server and client sides. Therefore, client-server applications can be made at runtime, from hierarchical-ordered collections of actors. Each actor is safe from the other ones and a securitized interface grants owners (e.g., external sources or suppliers) distant access and actor updates.
U.S. Patent Publication No. 2012/0188249 is a major part of the state of the art. It describes a system based on a graph that is distributed in one or many partitions associated with one or many services. The graph partition services communicate with the whole graph. This way, requests performed from a given partition can reach the distributed graph.
In practice, such distribution is necessary to manage treatments requested by the different users in the thousands, even millions of them. Such treatments are simultaneously performed on the server. It requires big computing resources and an escalating execution time—sometimes too much. By increasing the number of machines and distributing the general graph, it is now possible for every user to deal with a specifically desired subgraph of the whole general graph.
Solutions from the existing state of the art, especially in U.S. Patent Publication No. 2012/0188249, are focused on the fact that all the users have to share the same global graph, modified by all the users at the same time. This described solution allows a user to get the subgraph he requires. A user's subgraph is built by sending requests to all the servers that host the different partitions of the general graph.
This solution from current state of the art only provides users with a single general graph that is shared by all the users. This general graph is distributed on many servers, and it results in conflicts between the different modifications asked by the different users. It is impossible to get a specific context for each user. A user cannot create a specific context to apply a process on the graph. He can only process and modify the whole general graph.
In addition, this solution from the current state of the art cannot provide each user with a personal graph. In the solutions of the state of the art, all the users have only access to the same global graph. Through this process, it is not possible to provide a given user with his personalized service, which would rely on distributed computing resources.
This results in a huge loss of performance. Information is massively redundant in each user's subgraph. This performance loss is a major limit to manage thousands of users on large-sized graphs.
An expert would be naturally driven to solve this issue by duplicating for each existing user the general graph or sub-graphs of the general graph.
This would also imply multiplying the number of server clusters to manage all of this data or let the user's computer manage it itself. In both cases, there would be additional drawbacks: there would be no way to share common information between the users. However, common information between the users' graphs is massive.
In addition, hardware resources would be multiplied, and would not be exploited in an efficient and optimized way.